

def _align_to_model_files(
        model_files: list,
        prediction_column_names: list,
        model_input_headers: list
    ):
    """
    保证三者长度一致：
    - 若 pred_names / input_headers 比 model_files **多** → 仅保留前 len(model_files) 个
    - 若 pred_names / input_headers 比 model_files **少** → 抛 ValueError
    返回裁剪（或保持原状）的两个列表。
    """
    m = len(model_files)
    p = len(prediction_column_names)
    h = len(model_input_headers)

    # 1️⃣ 先检查“少”的情况 —— 直接报错
    if p < m or h < m:
        missing_detail = []
        if p < m:
            missing_detail.append(f"预测列名缺 {m - p} 个")
        if h < m:
            missing_detail.append(f"特征通道数组缺 {m - h} 个")
        raise ValueError(
            f"列表长度不足：{', '.join(missing_detail)}；"
            f"len(model_files)={m}, "
            f"len(prediction_column_names)={p}, "
            f"len(model_input_headers)={h}"
        )

    # 2️⃣ 若“多”，就裁剪
    if p > m:
        prediction_column_names = prediction_column_names[:m]
    if h > m:
        model_input_headers = model_input_headers[:m]

    return prediction_column_names, model_input_headers